<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Symbol的声明方式</title>
</head>
<body>
    
</body>
<script>
    /*
        什么是Symbol类型 ？  为什么要使用Symbol类型呢？
            Symbol类型 我们可以简单的理解成是一种永远都不会重复的字符串类型
                为什么要使用Symbol类型呢？  在很多时候会出现字符串耦合的问题  所以使用Symbol类型就可以解决这种问题
    */

    /*
        Symbol()括号里面接收的参数可以理解成是描述
    */

    // 方法1  使用Symbol()的方式声明一个Symbol类型
    let text = Symbol('hhh')
    let text2 = Symbol('hhh')
    console.log(text)   //Symbol(hhh)
    console.log(text2)   //Symbol(hhh)
    console.log(text === text2)   // false  可见 虽然两个东西的打印结果是一样的  但是他们的关系是不相等的关系  这点有点类似与对象

    console.log(text.description) //Symbol类型使用.descriptin可以获取Symbol对象的描述

    // 方法2  使用Symbol.for(描述)  声明的Symbol类型

    /*
        相当于全局定义了数据类型
    */
    let text3 = Symbol.for('jimmy')  
    let text4 = Symbol.for('jimmy')

    console.log(text3)  //Symbol(jimmy)
    console.log(text4)  //Symbol(jimmy)
    console.log(text3 === text4)  //true  这个就是使用for的区别 可以简单的理解成是将这个类型放在了一个特殊的内存空间 

</script>
</html>